@@ -12,7 +12,7 @@ module AgentControllerConcern |
||
| 12 | 12 |
end |
| 13 | 13 |
|
| 14 | 14 |
def control_action |
| 15 |
- options['action'].presence || 'run' |
|
| 15 |
+ options['action'] |
|
| 16 | 16 |
end |
| 17 | 17 |
|
| 18 | 18 |
def validate_control_action |
@@ -19,7 +19,7 @@ module Agents |
||
| 19 | 19 |
|
| 20 | 20 |
Set `action` to one of the action types below: |
| 21 | 21 |
|
| 22 |
- * `run`: This is the default. Target Agents are run at intervals. |
|
| 22 |
+ * `run`: Target Agents are run at intervals, except for those disabled. |
|
| 23 | 23 |
|
| 24 | 24 |
* `disable`: Target Agents are disabled (if not) at intervals. |
| 25 | 25 |
|
@@ -86,11 +86,11 @@ describe Rufus::Scheduler do |
||
| 86 | 86 |
|
| 87 | 87 |
stub.any_instance_of(Agents::SchedulerAgent).second_precision_enabled { true }
|
| 88 | 88 |
|
| 89 |
- @agent1 = Agents::SchedulerAgent.new(name: 'Scheduler 1', options: { schedule: '*/1 * * * * *' }).tap { |a|
|
|
| 89 |
+ @agent1 = Agents::SchedulerAgent.new(name: 'Scheduler 1', options: { action: 'run', schedule: '*/1 * * * * *' }).tap { |a|
|
|
| 90 | 90 |
a.user = users(:bob) |
| 91 | 91 |
a.save! |
| 92 | 92 |
} |
| 93 |
- @agent2 = Agents::SchedulerAgent.new(name: 'Scheduler 2', options: { schedule: '*/1 * * * * *' }).tap { |a|
|
|
| 93 |
+ @agent2 = Agents::SchedulerAgent.new(name: 'Scheduler 2', options: { action: 'run', schedule: '*/1 * * * * *' }).tap { |a|
|
|
| 94 | 94 |
a.user = users(:bob) |
| 95 | 95 |
a.save! |
| 96 | 96 |
} |
@@ -4,7 +4,10 @@ describe Agents::SchedulerAgent do |
||
| 4 | 4 |
let(:valid_params) {
|
| 5 | 5 |
{
|
| 6 | 6 |
name: 'Example', |
| 7 |
- options: { 'schedule' => '0 * * * *' },
|
|
| 7 |
+ options: {
|
|
| 8 |
+ 'action' => 'run', |
|
| 9 |
+ 'schedule' => '0 * * * *' |
|
| 10 |
+ }, |
|
| 8 | 11 |
} |
| 9 | 12 |
} |
| 10 | 13 |
|
@@ -73,7 +76,10 @@ describe Agents::SchedulerAgent do |
||
| 73 | 76 |
|
| 74 | 77 |
agent.memory['scheduled_at'] = time |
| 75 | 78 |
# Currently agent.options[]= is not detected |
| 76 |
- agent.options = { 'schedule' => '*/5 * * * *' }
|
|
| 79 |
+ agent.options = {
|
|
| 80 |
+ 'action' => 'run', |
|
| 81 |
+ 'schedule' => '*/5 * * * *' |
|
| 82 |
+ } |
|
| 77 | 83 |
agent.save |
| 78 | 84 |
expect(agent.memory['scheduled_at']).to be_nil |
| 79 | 85 |
end |
@@ -10,12 +10,12 @@ shared_examples_for AgentControllerConcern do |
||
| 10 | 10 |
|
| 11 | 11 |
describe "validation" do |
| 12 | 12 |
it "should validate action" do |
| 13 |
- ['run', 'enable', 'disable', '', nil].each { |action|
|
|
| 13 |
+ ['run', 'enable', 'disable'].each { |action|
|
|
| 14 | 14 |
agent.options['action'] = action |
| 15 | 15 |
expect(agent).to be_valid |
| 16 | 16 |
} |
| 17 | 17 |
|
| 18 |
- ['delete', 1, true].each { |action|
|
|
| 18 |
+ ['delete', '', nil, 1, true].each { |action|
|
|
| 19 | 19 |
agent.options['action'] = action |
| 20 | 20 |
expect(agent).not_to be_valid |
| 21 | 21 |
} |
@@ -23,18 +23,6 @@ shared_examples_for AgentControllerConcern do |
||
| 23 | 23 |
end |
| 24 | 24 |
|
| 25 | 25 |
describe 'control_action' do |
| 26 |
- it "should be one of the supported values" do |
|
| 27 |
- ['run', '', nil].each { |action|
|
|
| 28 |
- agent.options['action'] = action |
|
| 29 |
- expect(agent.control_action).to eq('run')
|
|
| 30 |
- } |
|
| 31 |
- |
|
| 32 |
- ['enable', 'disable'].each { |action|
|
|
| 33 |
- agent.options['action'] = action |
|
| 34 |
- expect(agent.control_action).to eq(action) |
|
| 35 |
- } |
|
| 36 |
- end |
|
| 37 |
- |
|
| 38 | 26 |
it "cannot be 'run' if any of the control targets cannot be scheduled" do |
| 39 | 27 |
expect(agent.control_action).to eq('run')
|
| 40 | 28 |
agent.control_targets = [agents(:bob_rain_notifier_agent)] |